package com.atguitu.cm.service;

import com.atguitu.cm.bean.Customer;

/**
 * CustomerList为Customer对象的管理模块
 * 内部使用数组管理一组Customer对象, 并提供相应的增删改查等方法
 * 供CustomerView调用
 * 
 * @author Unicorn
 */
public class CustomerList {
	Customer[] customers; // 用来保存客户对象的数组
	int total = 0; // 记录已保存客户对象的数量

	// 构造器
	public CustomerList() {
	}

	/**
	 * 此构造器用来完成对数组的初始化操作
	 * 
	 * @param totalCustomer
	 */
	public CustomerList(int totalCustomer) {
		customers = new Customer[totalCustomer];
	}

	/**
	 * 添加客户的操作
	 * 
	 * @param customer 要添加的对象
	 * @return 是否添加成功
	 */
	public boolean addCustomer(Customer customer) {
		/*
		 * 1.添加失败 当数组容量已满,继续添加
		 */
		if (total >= customers.length) {
			return false;
		}

		// 2.添加成功
		customers[total++] = customer;
		// 2.1改变total的值
		//total++;
		return true;
	}

	/**
	 * 替换指定位置的对象
	 * 
	 * @param index 指定位置
	 * @param cust  新的对象 return 替换是否成功
	 */
	public boolean replaceCustomer(int index, Customer cust) {
		// 1.替换失败
		if (index < 0 || index >= customers.length) {
			return false;
		}
		// 2.替换成功
		customers[index] = cust;
		return true;
	}

	/**
	 * 删除指定位置的元素
	 * 
	 * @param index
	 * @return 删除是否成功
	 */
	public boolean deleteCustomer(int index) {
		/*
		 * 1.删除失败 下标index不在数组范围内
		 */
		if (index < 0 || index >= customers.length) {
			return false;
		}
		// 2.删除成功
		for (int i = index + 1; i < total; i++) {
			customers[i - 1] = customers[i];
		}
		// 将最后一个元素置空
		customers[--total] = null;
		return true;
	}

	/**
	 * 获取系统内所有的客户信息
	 * 
	 * @return
	 */
	public Customer[] getAllCustomers() {
		// 1.定义新的数组 存储所有的客户信息
		Customer[] cust = new Customer[total];
		// 2.将数组内有价值的信息(不包含null)复制到新的数组内
		for (int i = 0; i < total; i++) {
			cust[i] = customers[i];
		}
		return cust;
	}

	/**
	 * 获取指定位置的客户信息
	 * 
	 * @param index 下标
	 * @return
	 */
	public Customer getCustomer(int index) {
		// 1.查找失败
		if (index < 0 || index > customers.length) {
			return null;
		}
		// 2.查找成功
		return customers[index];
	}

}
